<?php
/**
 * PHP文件缓存(通过序列化存储, 支持对象缓存)
 *   时间判断使用 int filemtime  ( string $filename  )
 *
 * @filesource serialfile.class.php
 * @package peck
 * @subpackage _cache
 * @version $id: 0.1, utf8, Tue Jan 26 14:02:27 CST 2010
 * @author LD King <kldscs[at]gmail.com>
 * @copyright Copyleft (D.) 2007 - 2009 MiFunny China Inc.
 * @link http://mifunny.info/
 * @example 
 *  ... 
 */
class serialfile extends _DsCache{
	
	/**
     * 写入缓存
     *   缓存时间为0, 永不过期
     *
     * @param string $id 缓存唯一标识ID
     * @param mixed $data 缓存内容
     * @param mixed $expiration 缓存时间,默认 int 900
     */
    public function set($id, $data, $expiration=null){
        $path = $this->_path($id);
        file_put_contents($path, '<?php die(); ?>'.serialize($data), LOCK_EX);
        clearstatcache();
        return true;
    }
	
	/**
     * 读取缓存，失败或缓存撒失效时返回 false
     *
     * @param string $id 缓存唯一标识ID
     * @param array $policy 配置数组
     *
     * @return mixed
     */
    public function get($id, $expiration=null){
    	$life_time = is_null($expiration) ? $this->_default_policy['life_time'] : $expiration;
        $path = $this->_path($id);

        if( is_file($path) ){
            if( $life_time==0 OR
              (time()-filemtime($path))<=$life_time ){
                return unserialize( file_get_contents($path,NULL,NULL,15) );   
            }else
                return false;
        }else
            return false;
    }
	
}//END class seriafile
?>
